import { defineStore } from 'pinia'
import { getSystemPageBySpecific } from '@/api/system/page'
import { useUserStore } from './user'
import { ElMessage } from 'element-plus'
import { ref } from 'vue'

// 命名规范：use+名称+Store   第一个参数为唯一标识
export const usePageStore = defineStore(
	'sms-page',
	() => {
		// 页面
		const page = ref<any[]>([])

		// 获取页面
		const getPage = async () => {
			try {
				// 获取用户信息（添加安全检查）
				const userStore = useUserStore()
				if (!userStore.userInfo || !userStore.userInfo.userInfo) {
					console.error('用户信息不存在，无法获取页面数据')
					ElMessage.error('用户信息不存在，请重新登录')
					return false
				}

				const userId = userStore.userInfo.userInfo.userTypeId

				const res = await getSystemPageBySpecific({
					allowUser: userId
				})
				if (res.data.code === 1) {
					page.value = res.data.data
					console.log('页面数据获取成功:', page.value.length, '条记录')
					return true
				} else {
					console.error('获取页面失败，API返回错误:', res.data)
					ElMessage.error(`获取页面失败: ${res.data.msg || '未知错误'}`)
					return false
				}
			} catch (error) {
				console.error('获取页面异常:', error)
				ElMessage.error('获取页面异常，请检查网络连接')
				return false
			}
		}

		// 清空页面
		const clearPage = () => {
			page.value = []
		}

		// 暴露
		return {
			page,
			getPage,
			clearPage
		}
	},
	{
		persist: true // 开启持久化
	}
)
